React Navigation
基本となる概念
React NavigationのNavigators
StackとかBottom Tabとか
React Navigationの依存library
特定のページだけBottom Tabを非表示にする
#WIP
version関係なくここに書くmrsekut.icon
React Navigationのoptionの設定
React Navigationの型付け
画面遷移時のアニメーションを指定する
現在見ているrouteの名前を取得する
getFocusedRouteNameFromRouteを使うと楽
https://reactnavigation.org/docs/screen-options-resolution/
useRouteでもいい
Navigation state
docs
code:ts
const state = {
// navigatorsの種類
type: 'stack',
// navigatorを一意に特定するkey
key: 'stack-1',
routeNames: 'Home', 'Profile', 'Settings',
routes: [
{ key: 'home-1', name: 'Home', params: { sortBy: 'latest' } },
{ key: 'settings-1', name: 'Settings' },
],
index: 1,
stale: false,
};
いくつかの概念の基礎になっているmrsekut.icon
関連
State Persistence
resetting the state
providing a custom initial state
NavigationContainer
一番rootでwrapするComponent
#??
Navigatorの大まかな構造
種類多すぎて忘れる
深い箇所でリロードすると、手前に戻るのがダルい
State Persistenceすればできる
https://reactnavigation.org/docs/state-persistence/
2022/4/18現在experimentalだが、少なくとも開発中は使えるはず
Hooks
docs
useNavigation
https://reactnavigation.org/docs/use-navigation/
https://reactnavigation.org/docs/typescript/
navigation propsを返す
code:ts
import { useNavigation } from '@react-navigation/native';
const navigation = useNavigation();
https://qiita.com/shinnoki/items/e32e20b812606ce7219c#v5-1
useRoute
useLinkTo
https://reactnavigation.org/docs/configuring-links/#handling-unmatched-routes-or-404
https://reactnavigation.org/docs/use-link-to/
useNavigationState
useFocusEffect
useIsFocused
useLinkProps
useLinkBuilder
useScrollToTop
useTheme
NavigationContainer
docs
onStateChange
現在のroutingのstateを確認できる
safe area
https://github.com/th3rdwave/react-native-safe-area-context
https://reactnavigation.org/docs/handling-safe-area/#hiddencustom-header-or-tab-bar
ios Xのヘッダーらへんのスペースを保つかどうか
page name
https://github.com/react-navigation/react-navigation/issues/7614
code:ts
const screenName = useNavigationState((state) => state.routesstate.index.name)